package br.com.dallasmotopecas.comum.cliente.controller;

import java.sql.Connection;

import javax.faces.context.ExternalContext;

import br.com.dallasmotopecas.comum.cliente.model.ClienteDadosFinanceiroModel;
import br.com.dallasmotopecas.comum.cliente.vo.ClienteDadosFinanceiroVo;
import br.com.dallasmotopecas.util.controller.AbstractController;
import br.com.dallasmotopecas.util.exception.AlterarObjetoException;
import br.com.dallasmotopecas.util.exception.CampoObrigatorioException;
import br.com.dallasmotopecas.util.exception.ClasseNaoEncontradaException;
import br.com.dallasmotopecas.util.exception.ConexaoException;
import br.com.dallasmotopecas.util.exception.ConsultarObjetoException;
import br.com.dallasmotopecas.util.exception.InserirObjetoException;
 
public class ClienteDadosFinanceiroController extends AbstractController
{
	public ClienteDadosFinanceiroController(Connection connection) throws ConexaoException
	{
		super(connection);
	}

	public ClienteDadosFinanceiroController(ExternalContext externalContext) throws ClasseNaoEncontradaException, ConexaoException
	{
		super(externalContext);
	}
	
	private void campoObrigatorio(final ClienteDadosFinanceiroVo clienteDadosFinanceiroVo) throws CampoObrigatorioException
	{
		if (clienteDadosFinanceiroVo != null)
		{
			if (clienteDadosFinanceiroVo.getClienteVo().getId() == 0)
				throw new CampoObrigatorioException("Por Favor Informe o Cliente");
			
			if (clienteDadosFinanceiroVo.getDataPrimeiraParcela() == null)
				throw new CampoObrigatorioException("Por Favor Informe a Data da Primeira Parcela");
			
			if (clienteDadosFinanceiroVo.getDiasAtraso() == 0)
				throw new CampoObrigatorioException("Por Favor Informe o Dias de Atraso");
			
			if (clienteDadosFinanceiroVo.getValorTotal() ==  0)
				throw new CampoObrigatorioException("Por Favor Informe a Valor Total Devido");
		}
	}
	
	public void gravarDados(final ClienteDadosFinanceiroVo clienteDadosFinanceiroVo) throws CampoObrigatorioException, InserirObjetoException, AlterarObjetoException
	{
		ClienteDadosFinanceiroModel clienteDadosFinanceiroModel = null;
		try
		{
			campoObrigatorio(clienteDadosFinanceiroVo);
			
			clienteDadosFinanceiroModel = new ClienteDadosFinanceiroModel(getConnection());
			
			if (clienteDadosFinanceiroModel.alterarDadosClienteFinanceiro(clienteDadosFinanceiroVo) == 0)
				clienteDadosFinanceiroModel.inserirDadosClienteFinanceiro(clienteDadosFinanceiroVo);
			
		}
		catch(InserirObjetoException e)
		{
			throw e;
		}
		catch (AlterarObjetoException e)
		{
			throw e;
		}
		finally
		{
			clienteDadosFinanceiroModel = null;
		}
	}
	
	public void consultarClienteDadosFinanceiro(final ClienteDadosFinanceiroVo clienteDadosFinanceiroVo) throws ConsultarObjetoException
	{
		ClienteDadosFinanceiroModel clienteDadosFinanceiroModel = null;
		try
		{
			if (clienteDadosFinanceiroVo != null)
			{
				clienteDadosFinanceiroModel = new ClienteDadosFinanceiroModel(getConnection());
				clienteDadosFinanceiroModel.consultarDadosClienteFinanceiro(clienteDadosFinanceiroVo);
			}
		}
		catch(ConsultarObjetoException e)
		{
			throw e;
		}
		finally
		{
			clienteDadosFinanceiroModel = null;
		}
	}
}
